<?php

//求md5 
function md5File($path){
    if(substr($path,0,4)=='http'){
        return '未知！';
    }

    if($path!='' && file_exists(getcwd().$path)){
        return md5_file(getcwd().$path);
    }else{
        return "文件不存在！";
    }

}

function get_version($str){
    $tmp=explode('_',$str);
    return intval($tmp[count($tmp)-1]);
}

function get_vehicletype($str){
    return explode('_',$str)[0];
}

//文件下载方法
function down_file($file_path){

    //死去活来，演示下载一个图片.
    //如果文件是中文.
    //原因 php文件函数，比较古老，需要对中文转码 gb2312
//    $file_path=iconv("utf-8","gb2312",$file_path);

    //1.打开文件
    if(!file_exists($file_path)){
        echo '文件不存在!<a href='.$_SERVER['HTTP_REFERER'].'>返回上一页</a>';
        return ;
    }
    $fp=fopen($file_path,"r");
    //获取下载文件的大小
    $file_size=filesize($file_path);
    /* if($file_size>30){
         echo "<script language='javascript'>window.alert('过大')</script>";
         return ;
     }*/
    //返回的文件
    header("Content-type: application/octet-stream");
    //按照字节大小返回
    header("Accept-Ranges: bytes");
    //返回文件大小
    header("Accept-Length: $file_size");
    //这里客户端的弹出对话框，对应的文件名

    $path_arr=explode('/',$file_path);  //求basename
    header("Content-Disposition: attachment; filename=".$path_arr[count($path_arr)-1]);
    //向客户端回送数据
    $buffer=1024;
    //为了下载的安全，我们最好做一个文件字节读取计数器
    $file_count=0;
    //这句话用于判断文件是否结束
    while(!feof($fp) && ($file_size-$file_count>0) ){
        $file_data=fread($fp,$buffer);
        //统计读了多少个字节
        $file_count+=$buffer;
        //把部分数据回送给浏览器;
        echo $file_data;
    }
    //关闭文件
    fclose($fp);
}

function is_status($status,$attr){
    if($status){
        return '<i class="layui-icon is_something" data-attr="'.$attr.'">&#xe605;</i>';
    }else{
        return '<i class="layui-icon is_something" data-attr="'.$attr.'">&#x1006;</i>';
    }
}

function order_type($order_type){
    switch($order_type){
        case 'NORMAL':
            return '普通工单';
            break;
        case 'REWORK':
            return '返工工单';
            break;
        default:
            return '未知类型';
    }
}

function step_type($step_type){
    switch($step_type){
        case 0:
            return '普通站';
            break;
        case 1:
            return '测试站';
            break;
        case 2:
            return '维修站';
            break;
        default:
            return '未知类型';
    }
}

function get_prior_level($level){
    switch($level){
        case 0:
            return '无';
            break;
        case 1:
            return '低';
            break;
        case 2:
            return '中';
            break;
        case 3:
            return '高';
            break;
        case 4:
            return '紧急';
            break;
        default:
            return '未知级别';
    }
}

//取得路径中最后的文件名
function getfilename($str){
    $str=explode('/',$str);
    return $str[count($str)-1];
}


//自定义一个文件大小单位转换函数
function get_file_size($bytes)
{
    //如果提供的字节数大于等于2的40次方，则条件成立
    if ($bytes >= pow(2, 40)) {
        //将字节大小转换为同等的T大小
        $return = round($bytes / pow(1024, 4), 2);

        //单位为TB
        $suffix = "TB";

        //如果提供的字节数大于等于2的30次方，则条件成立
    } elseif ($bytes >= pow(2, 30)) {
        //将字节大小转换为同等的G大小
        $return = round($bytes / pow(1024, 3), 2);

        //单位为GB
        $suffix = "GB";

        //如果提供的字节数大于等于2的20次方，则条件成立
    } elseif ($bytes >= pow(2, 20)) {
        //将字节大小转换为同等的M大小
        $return = round($bytes / pow(1024, 2), 2);

        //单位为MB
        $suffix = "MB";

        //如果提供的字节数大于等于2的10次方，则条件成立
    } elseif ($bytes >= pow(2, 10)) {

        //将字节大小转换为同等的K大小
        $return = round($bytes / pow(1024, 1), 2);

        //单位为KB
        $suffix = "KB";

        //否则提供的字节数小于2的10次方，则条件成立
    } else {
        //字节大小单位不变
        $return = $bytes;
        //单位为Byte
        $suffix = "Byte";
    }
    //返回合适的文件大小和单位
    return $return . " " . $suffix;
}

function dump1($vars, $label = '', $return = false)
{
    if (ini_get('html_errors')) {
        $content = "<pre>\n";
        if ($label != '') {
            $content .= "<strong>{$label} :</strong>\n";
        }
        $content .= htmlspecialchars(print_r($vars, true));
        $content .= "\n</pre>\n";
    } else {
        $content = $label . " :\n" . print_r($vars, true);
    }
    if ($return) { return $content; }
    echo $content;
    return null;
}

//格式化api输出
function APIReturn_old($code, $message, $data = [])
{
    $res['status_code'] = $code;
    $res['message'] = $message;
//    $res['timestamp'] = time();
    if (empty($data) && is_array($data)) {
        $data = (object)$data;
    }

     $res['data'] = $data;
//    $res['data'] = base64_encode((json_encode($data, JSON_UNESCAPED_UNICODE)));
//    $res['sign'] = md5($res['data'] . $res['timestamp']) . md5($res['timestamp']);
    return response($res, 200)->header('Content-Type', 'application/json');
}

//格式化api输出
function APIReturn($code, $message, $data = null,$http_status=200)
{
    $res['status_code'] = $code;
    $res['message'] = $message;
//    $res['timestamp'] = time();
    if (empty($data) && is_array($data)) {
        $data = (object)$data;
    }

    $res['data'] = $data;
//    $res['data'] = base64_encode((json_encode($data, JSON_UNESCAPED_UNICODE)));
//    $res['sign'] = md5($res['data'] . $res['timestamp']) . md5($res['timestamp']);
    return response($res, $http_status)->header('Content-Type', 'application/json');
}

function err_return($code,$message){
    $arr=[];
    $arr['error_code']=$code;
    $arr['error_message']=$message;
    return $arr;
}

//字符串分割为数组
function strsToArray($strs) {
    $result = array();
    $array = array();
    $strs = str_replace('，', ',', $strs);
    $strs = str_replace("\r\n", ',', $strs);
    $strs = str_replace(' ', ',', $strs);
    $strs = str_replace(';', ',', $strs);
    $array = explode(',', $strs);
    foreach ($array as $key => $value) {
        if ('' != ($value = trim($value))) {
            $result[] = $value;
        }
    }
    return $result;
}

//接口API返回
function REStfulAPIReturn($code, $message, $data = null,$http_status=200)
{
    $res['status_code'] = $code;
    $res['message'] = $message;
    if ($data || is_array($data)) {
        $res['data'] = $data;
    }
    //记录所有请求日志
    App\Libraries\Logs::setRequestLog($res);
    return response($res, $http_status)->header('Content-Type', 'application/json');
}

//生成GUID
function create_guid() {
    $charid = strtoupper(md5(uniqid(mt_rand(), true)));
    $hyphen = chr(45); // "-" 
    $uuid = chr(123)// "{" 
            . substr($charid, 0, 8) . $hyphen
            . substr($charid, 8, 4) . $hyphen
            . substr($charid, 12, 4) . $hyphen
            . substr($charid, 16, 4) . $hyphen
            . substr($charid, 20, 12)
            . chr(125); // "}" 
    return $uuid;
}

//获取IP地址
function getIp() {
    $ip = '未知IP';
 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return is_ip($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : $ip;
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return is_ip($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $ip;
    } else {
        return is_ip($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : $ip;
    }
}

//判定IP地址
function is_ip($str) {
    $ip = explode('.', $str);
    for ($i = 0; $i < count($ip); $i++) {
        if ($ip[$i] > 255) {
            return false;
        }
    }
    return preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $str);
}

/* * **
 * 获取Post请求参数
 * 支持FormData或JSONRawData
 */

function getPostData() {
    $postArr = @json_decode(file_get_contents("php://input"), true);
    if (!$postArr) {
        $postArr = Request::input();
    }
    return $postArr;
}
